/*
    This file is part of the substandard lisp implementation of Standard Lisp
    Copyright (C) 2011 Nicky Nickell

    substandard lisp is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

std_stringltmarkgtmark = (a, env) ->
  s1 = a[0].value
  s2 = a[1].value

  if s1 isnt s2
    uplim = Math.min(s1.length, s2.length)
    for i in [0...uplim]
      if s1.charAt(i) isnt s2.charAt(i)
        return new lisp_integer i
    return new lisp_integer uplim
  else
    return NIL

/*---
name: string<>
arity: 2
rest: false
ftype: FTYPE_EXPR

argument-types:
  - TYPE_STRING
  - TYPE_STRING

argument-names:
  - S1
  - S2

doc: |
  string<>

tests: |
  (string<> "foo" "foo") -> NIL
  (string<> "fooo" "foo") -> 3
  (string<> "foo" "fooo") -> 3
...*/
